﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public partial class KrediKart : System.Web.UI.Page
{
    protected void Page_PreRender(object sender, EventArgs e)
    {
        DilDegistir();
    }
    protected void DilDegistir()
    {
        if (Cookies.Dil == "TR")
        {

            txtIndirimKodu.Attributes["placeholder"] = "İndirim Kodu";
            txtKartSahibi.Attributes["placeholder"] = "Kartın üstündeki isim";
            txtKartNo.Attributes["placeholder"] = "Kredi kartı numaranız";
            txtCvv.Attributes["placeholder"] = "Kartın arkasındaki güvenlik kodu";

            lblParaPuanHeader.InnerText = "Para Puan";
            lblIndirimKoduHeader.InnerText = "İndirim Kodu";
            lblOdemeTuruHeader.InnerText = "Ödeme Türü";
            lblKartTipiHeader.InnerText = "Kart Tipi";
            lblAdSoyadHeader.InnerText = "Ad Soyad";
            lblKartHeader.InnerText = "Kart No";
            lblSonKullanmaHeader.InnerText = "Son Kullanma Tarihi";
            lblGuvenlikHeader.InnerText = "Güvenlik Kodu";
            lblOdenecekTutarHeader.InnerText = "Ödenecek Tutar";
            lblAraToplamHeader.InnerText = "Ara Toplam";
            lblIndirimHeader.InnerText = "Toplam İndirim Tutarı";
            lblToplamTutarHeader.InnerText = "Toplam Tutar";
            cbParaPuan.Text = "Kullan";

            ddlOdemeSekli.Items[0].Text = "Ödeme Şekli";
            ddlKartTipi.Items[0].Text = "Kart Tipi";
            aylar.Items[0].Text = "Ay";
            aylar.Items[1].Text = "Ocak";
            aylar.Items[2].Text = "Şubat";
            aylar.Items[3].Text = "Mart";
            aylar.Items[4].Text = "Nisan";
            aylar.Items[5].Text = "Mayıs";
            aylar.Items[6].Text = "Haziran";
            aylar.Items[7].Text = "Temmuz";
            aylar.Items[8].Text = "Ağustos";
            aylar.Items[9].Text = "Eylül";
            aylar.Items[10].Text = "Ekim";
            aylar.Items[11].Text = "Kasım";
            aylar.Items[12].Text = "Aralık";
            yillar.Items[0].Text = "Yıl";
        }
        else
        {
            txtIndirimKodu.Attributes["placeholder"] = "Discount Code";
            txtKartSahibi.Attributes["placeholder"] = "The name on the credit card";
            txtKartNo.Attributes["placeholder"] = "Credit card number";
            txtCvv.Attributes["placeholder"] = "Security code";

            lblParaPuanHeader.InnerText = "Money Points";
            lblIndirimKoduHeader.InnerText = "Discount Code";
            lblOdemeTuruHeader.InnerText = "Payment Type";
            lblKartTipiHeader.InnerText = "Card Type";
            lblAdSoyadHeader.InnerText = "Name";
            lblKartHeader.InnerText = "Credit Card No";
            lblSonKullanmaHeader.InnerText = "Expire Date";
            lblGuvenlikHeader.InnerText = "Security Code";
            lblOdenecekTutarHeader.InnerText = "Price";
            lblAraToplamHeader.InnerText = "Total Amount";
            lblIndirimHeader.InnerText = "Discount";
            lblToplamTutarHeader.InnerText = "Net Amount";
            cbParaPuan.Text = "Use";

            ddlOdemeSekli.Items[0].Text = "Payment Type";
            ddlKartTipi.Items[0].Text = "Card Type";
            aylar.Items[0].Text = "Month";
            aylar.Items[1].Text = "January";
            aylar.Items[2].Text = "February";
            aylar.Items[3].Text = "March";
            aylar.Items[4].Text = "April";
            aylar.Items[5].Text = "May";
            aylar.Items[6].Text = "Jun";
            aylar.Items[7].Text = "July";
            aylar.Items[8].Text = "August";
            aylar.Items[9].Text = "September";
            aylar.Items[10].Text = "October";
            aylar.Items[11].Text = "November";
            aylar.Items[12].Text = "December";
            yillar.Items[0].Text = "Year";
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Request.UrlReferrer != null)
            {
                string prevPage = Request.UrlReferrer.ToString();
                if (!(prevPage.ToLower().Contains("teslimat-adresi") || prevPage.ToLower().Contains("fatura-adresi")))
                    Response.Redirect(Page.GetRouteUrl("AnaSayfa", new { }));
            }
            else
                Response.Redirect(Page.GetRouteUrl("AnaSayfa", new { }));

            if (Sessions.SiparisFiyati == null)
                Response.Redirect(Page.GetRouteUrl("AnaSayfa", new { }));

            if (Sessions.ToptanMusterimi != 1 && ddlOdemeSekli.Items.Count > 3)
                ddlOdemeSekli.Items.RemoveAt(3);

            if (Sessions.UyeId==100000)
            {
                txtKartSahibi.Text = "Kadir Akış";
                txtKartNo.Text = "4355084355084358";
                txtCvv.Text = "000";
                ddlKartTipi.SelectedIndex = 1;
                aylar.SelectedIndex = 12;
                yillar.SelectedIndex = 5;
            }
        }

        //HtmlForm myForm = Page.Master.FindControl("form1") as HtmlForm;
        //if (myForm != null)
        //{

        //    myForm.Action = "OdemeBasarili.aspx";//"https://www.sanalakpos.com/servlet/est3Dgate";
        //    myForm.Method = "post";
        //}

        decimal ParaPuan = 0;

        if(Sessions.SiparisFiyati!=null)            
            ParaPuan = (decimal)Sessions.SiparisFiyati["ParaPuan"];

        if (ParaPuan == 0)
            divParaPuan.Style.Add("display", "none");
        else
            lblParaPuan.Text = ParaPuan.ToString() + " " + Sessions.SiparisFiyati["ParaBirimi"].ToString();        

        if(Sessions.UyeId==-1)
            divIndirimKodu.Style.Add("display", "none");

        FiyatHesapla();
    }

    protected void btnKaydet_Click(object sender, EventArgs e)
    {
        int OdemeSekli = Convert.ToInt16(ddlOdemeSekli.SelectedItem.Value);
        if (Sessions.SiparisFiyati != null)
        {
            if (OdemeSekli != 4)
            {
                DataRow drSiparis = Sessions.SiparisFiyati;

                int FaturaAdresi = Sessions.FaturaAdresi;
                int TeslimatAdresi = Sessions.TeslimatAdresi;

                decimal Fiyat = (decimal)drSiparis["ToplamFiyat"];
                decimal ParaPuan = (decimal)drSiparis["ParaPuan"];
                bool ParaPuanKullanildiMi = (bool)drSiparis["ParaPuanKullanildiMi"];
                bool IndirimKullanildiMi = (bool)drSiparis["IndirimKullanildiMi"];
                int IndirimId = Convert.ToInt16(drSiparis["IndirimId"]);
                int ParaBirimiId = Convert.ToInt16(drSiparis["ParaBirimiId"]);
                string ParaBirimi = drSiparis["ParaBirimi"].ToString();
                int UrunId = Convert.ToInt16(Sessions.SiparisFiyati["UrunId"]);
                int HizliAdet = Convert.ToInt16(Sessions.SiparisFiyati["HizliAdet"]);
                decimal OdenecekTutar = (decimal)Sessions.SiparisFiyati["OdenecekTutar"];

                int SiparisReferansId = DataAccess.GetSiparisReferans(UrunId, OdenecekTutar,OdemeSekli,FaturaAdresi,TeslimatAdresi,Fiyat,ParaPuan,ParaPuanKullanildiMi,IndirimKullanildiMi,
                                                                            IndirimId,ParaBirimiId,ParaBirimi,HizliAdet);

                Sessions.SiparisFiyati["OdemeSekliId"] = OdemeSekli;
                Sessions.SiparisFiyati["SiparisReferansId"] = SiparisReferansId;
                Sessions.SiparisFiyati["KartNo"] = txtKartNo.Text;
                Sessions.SiparisFiyati["KartSahibi"] = txtKartSahibi.Text;
                Sessions.SiparisFiyati["KartTipi"] = ddlKartTipi.SelectedItem.Value;
                Sessions.SiparisFiyati["SonKullanmaAy"] = aylar.SelectedItem.Value;
                Sessions.SiparisFiyati["SonKullanmaYil"] = yillar.SelectedItem.Value;
                Sessions.SiparisFiyati["CVV"] = txtCvv.Text; ;

                Response.Redirect("BankaYonlendirme.aspx");

            }
            else
            {
                DataRow drSiparis = Sessions.SiparisFiyati;

                int FaturaAdresi = Sessions.FaturaAdresi;
                int TeslimatAdresi = Sessions.TeslimatAdresi;

                decimal Fiyat = (decimal)drSiparis["ToplamFiyat"];
                decimal ParaPuan = (decimal)drSiparis["ParaPuan"];
                bool ParaPuanKullanildiMi = (bool)drSiparis["ParaPuanKullanildiMi"];
                bool IndirimKullanildiMi = (bool)drSiparis["IndirimKullanildiMi"];
                int IndirimId = Convert.ToInt16(drSiparis["IndirimId"]);
                int ParaBirimiId = Convert.ToInt16(drSiparis["ParaBirimiId"]);
                int SiparisReferansId = drSiparis["SiparisReferansId"].ToIntNN();
                string ParaBirimi = drSiparis["ParaBirimi"].ToString();
                int UrunId = Convert.ToInt16(drSiparis["UrunId"]);
                int HizliAdet = Convert.ToInt16(drSiparis["HizliAdet"]);
                decimal OdenecekTutar = (decimal)drSiparis["OdenecekTutar"];
                bool HediyePaketiMi = (bool)drSiparis["HediyePaketi"];
                string HediyeNotu = drSiparis["HediyeNotu"].ToString();


                DataRow Siparis = DataAccess.InsSiparis(OdemeSekli, FaturaAdresi, TeslimatAdresi, Fiyat, OdenecekTutar, ParaPuan, ParaPuanKullanildiMi,
                                                        IndirimKullanildiMi, IndirimId, ParaBirimiId, ParaBirimi, UrunId, HizliAdet, SiparisReferansId, HediyePaketiMi, HediyeNotu); 
                
                if (Siparis != null)
                {
                    int SepetAdedi = Convert.ToInt16(Siparis["SepetAdedi"]);
                    Sessions.SepetAdedi = Convert.ToInt16(SepetAdedi);
                    (this.Master as Skala).SepetAdediGuncelle(SepetAdedi);
                    string SiparisNo = Siparis["SiparisId"].ToString();
                    Sessions.SiparisFiyati = null;

                    Control updPanel = (this.Master as Skala).FindControl("upAd");
                    ScriptManager.RegisterStartupScript(updPanel, updPanel.GetType(), "a", "<script> alertSiparis('" + SiparisNo + " numaralı siparişiniz alınmıştır. Siparişinizi hesabım sayfasından takip edebilirsiniz.'); </script>", false);
                }
            }
            
        }
        else
            Response.Redirect(Page.GetRouteUrl("UyeGiris", new object { }));
    }

    protected void txtIndirimKodu_TextChanged(object sender, EventArgs e)
    {
        FiyatHesapla();
    }

    protected void cbParaPuan_CheckedChanged(object sender, EventArgs e)
    {
        FiyatHesapla();
    }

    protected void FiyatHesapla()
    {
        DataRow drSiparis = Sessions.SiparisFiyati;
        
        string ParaBirimi = drSiparis["ParaBirimi"].ToString();
        string IndirimKodu = drSiparis["IndirimKodu"].ToString();
        decimal ToplamFiyat = (decimal)drSiparis["ToplamFiyat"];
        decimal ParaPuan = (decimal)drSiparis["ParaPuan"];
        decimal OdenecekTutar = (decimal)drSiparis["OdenecekTutar"];

        if (txtIndirimKodu.Text == IndirimKodu)
        {
            decimal IndirimOrani = 0;
            decimal.TryParse(drSiparis["IndirimOrani"].ToString(), out IndirimOrani);
            OdenecekTutar = decimal.Round(ToplamFiyat * (1 - IndirimOrani / 100), 2);
            drSiparis["IndirimKullanildiMi"] = true;
        }
        else
        {
            OdenecekTutar = ToplamFiyat;
            drSiparis["IndirimKullanildiMi"] = false;
        }

        if (cbParaPuan.Checked)
        {
            OdenecekTutar = OdenecekTutar - ParaPuan;
            drSiparis["ParaPuanKullanildiMi"] = true;
        }
        else
            drSiparis["ParaPuanKullanildiMi"] = false;

        drSiparis["OdenecekTutar"] = OdenecekTutar;
        Sessions.SiparisFiyati = drSiparis;

        lblToplamTutar.Text = ToplamFiyat.ToString() + " " + ParaBirimi;
        lblIndirimTutari.Text = (ToplamFiyat-OdenecekTutar).ToString() + " " + ParaBirimi;
        lblOdenecekTutar.Text = OdenecekTutar.ToString() + " " + ParaBirimi;
    }
    protected void ddlOdemeSekli_SelectedIndexChanged(object sender, EventArgs e)
    {
        //if (ddlOdemeSekli.SelectedIndex != 4 )
        //{
        //    txtKartNo.Attributes.Remove("readonly");
        //    txtCvv.Attributes.Remove("readonly");
        //    txtKartSahibi.Attributes.Remove("readonly");
        //    ddlKartTipi.Attributes.Remove("disabled");
        //    aylar.Attributes.Remove("disabled");
        //    yillar.Attributes.Remove("disabled"); 
        //}
        //else
        //{
        //    txtKartNo.Attributes.Add("readonly", "readonly");
        //    txtCvv.Attributes.Add("readonly", "readonly");
        //    txtKartSahibi.Attributes.Add("readonly", "readonly");
        //    ddlKartTipi.Attributes.Add("disabled", "disabled");
        //    aylar.Attributes.Add("disabled", "disabled");
        //    yillar.Attributes.Add("disabled", "disabled"); 
        //}

    }
}